<!DOCTYPE html>
<html>
<head>
<link href='../../dist/fullcalendar.css' rel='stylesheet' />
<link href='../../dist/fullcalendar.print.css' rel='stylesheet' media='print' />
<script src='../../node_modules/jquery/dist/jquery.js'></script>
<script src='../../node_modules/moment/moment.js'></script>
<script src='../../dist/fullcalendar.js'></script>
<script src='../../dist/plugins/google-calendar.js'></script>
<script>

  /*
  TODO:
  this file demonstrates a bug, unrelated to triggers, where starting off in a small window,
  changing to week, maximizing the window, switching to month causes the last column of
  events to be misaligned (don't stretch all the way right)
  this happens due to week being taller than month before the switch back
  */

  var date = new Date();
  var d = date.getDate();
  var m = date.getMonth();
  var y = date.getFullYear();

  $(document).ready(function() {
    $('#calendar').fullCalendar({
      //weekends: false,
      //initialView: 'week',

      headerToolbar: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,week,dayGridWeek,day,dayGridDay'
      },
      editable: true,
      //direction: 'rtl',

      viewDisplay: function(view) {
        console.log('viewDisplay');
        console.log(view.activeStart + ' - ' + view.activeEnd);
        console.log(view.currentStart + ' - ' + view.currentEnd);
        //console.log(view);
        //console.log(this);
      },

      _eventsPositioned: function(view) {
        console.log('all rendered', view);
      },

      //loading: // see sources.html

      windowResize: function(view) {
        console.log('windowResize - ' + view.title);
        //console.log(this);
      },

      slotMinTime: '5',
      slotMaxTime: '21:30',
      dayClick: function(dayDate, allDay, ev, view) {
        //alert(dayDate);
        console.log('dayClick - ' + dayDate + ', allDay:' + allDay + ' - ' + view.title);
        //console.log(ev);
        console.log(this);
      },

      selectable: true,
      select: function(start, end, allDay) {
        console.log('select', start, end, allDay);
      },
      unselect: function() {
        console.log('unselect');
      },

      eventRender: function(event, element, view) {
        if (event.id == 888) {
          return false;
        }
        else if (event.id == 777) {
          return $("<div style='background:green'>").text(event.title);
        }
        else if (event.id == 999) {
          element.css('border-color', 'red');
          //console.log('renderEvent (' + event.title + ') - ' + view.title);
        }
      },
      eventPositioned: function(event, element, view) {
        //console.log('after render for "' + event.title + '":');
        //console.log(element);
      },

      eventClick: function(event, jsEvent, view) {
        console.log('EVENT CLICK ' + event.title);
        //console.log(jsEvent);
        //console.log(view);
        //console.log(this);
        //return false;
      },


      eventMouseover: function(event, jsEvent, view) {
        console.log('MOUSEOVER ' + event.title);
        //console.log(jsEvent);
        //console.log(view);
        //console.log(this);
      },
      eventMouseout: function(event, jsEvent, view) {
        console.log('MOUSEOUT ' + event.title);
        //console.log(jsEvent);
        //console.log(view);
        //console.log(this);
      },


      eventDragStart: function(event, jsEvent, ui, view) {
        console.log('DRAG START ' + event.title);
        console.log(this);
      },
      eventDragStop: function(event, jsEvent, ui, view) {
        console.log('DRAG STOP ' + event.title);
        console.log(this);
      },
      eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
        console.log('DROP ' + event.title);
        console.log(dayDelta + ' days');
        console.log(minuteDelta + ' minutes');
        console.log('allday: ' + allDay);
        //setTimeout(function() {
        //  revertFunc();
        //}, 2000);
        //console.log(jsEvent);
        //console.log(ui);
        //console.log(view.title);
        //console.log(this);
      },

      eventResizeStart: function(event, jsEvent, ui, view) {
        console.log('RESIZE START ' + event.title);
        //console.log(this);
      },
      eventResizeStop: function(event, jsEvent, ui, view) {
        console.log('RESIZE STOP ' + event.title);
        //console.log(this);
      },
      eventResize: function(event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, view) {
        console.log('RESIZE!! ' + event.title);
        console.log(dayDelta + ' days');
        console.log(minuteDelta + ' minutes');
        //setTimeout(function() {
        //  revertFunc();
        //}, 2000);
        //console.log(jsEvent);
        //console.log(ui);
        //console.log(view.title);
        //console.log(this);
      },

      /* for testing _eventsPositioned
      events: {
        url: "http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic",
        editable: true,
        className: 'holiday'
      },
      */

      events: [
        {
          title: 'All Day Event',
          start: new Date(y, m, 1)
        },
        {
          title: 'Long Event',
          start: new Date(y, m, d-5),
          end: new Date(y, m, d-2)
        },
        {
          groupId: 999,
          title: 'Repeating Event',
          start: new Date(y, m, d-3, 16, 0),
          allDay: false
        },
        {
          groupId: 999,
          title: 'Repeating Event',
          start: new Date(y, m, d+4, 16, 0),
          allDay: false
        },
        {
          id: 888,
          title: 'Meeting',
          start: new Date(y, m, d, 10, 30),
          allDay: false
        },
        {
          id: 777,
          title: 'Lunch',
          start: new Date(y, m, d, 12, 0),
          end: new Date(y, m, d, 14, 0),
          allDay: false
        },
        {
          title: 'Birthday Party',
          start: new Date(y, m, d+1, 19, 0),
          end: new Date(y, m, d+1, 22, 30),
          allDay: false
        },
        {
          title: 'Click for Google',
          start: new Date(y, m, 28),
          end: new Date(y, m, 29),
          url: 'http://google.com/'
        }
      ]
    });
  });

</script>
</head>
<body style='font-size:12px'>
<div id='calendar' style='width:75%;margin:20px auto 0;font-family:arial'></div>
</body>
</html>
